---
title: 'Zendesk (Helpdesk)'
sidebarTitle: 'Zendesk'
description: 'Access the Zendesk API in 2 minutes 💨'
---

<Tabs>
  <Tab title="🚀 Quickstart">
    <Steps>
      <Step title="Create an integration">
        In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> _Configure New Integration_ -> _Zendesk_.
      </Step>
      <Step title="Authorize Zendesk">
        Go to [Connections](https://app.nango.dev/dev/connections) -> _Add Test Connection_ -> _Authorize_, then log in to Zendesk. Later, you'll let your users do the same directly from your app.
      </Step>
      <Step title="Call the Zendesk API">
        Let's make your first request to the Zendesk API (fetch a list of tickets). Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):
        <Tabs>
            <Tab title="cURL">

                ```bash
                curl "https://api.nango.dev/proxy/api/v2/search?query=type:ticket&per_page=10" \
                  -H "Authorization: Bearer <NANGO-SECRET-KEY>" \
                  -H "Provider-Config-Key: <INTEGRATION-ID>" \
                  -H "Connection-Id: <CONNECTION-ID>"
                ```

            </Tab>

            <Tab title="Node">

            Install Nango's backend SDK with `npm i @nangohq/node`. Then run:

            ```typescript
            import { Nango } from '@nangohq/node';

            const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' });

            const res = await nango.get({
                endpoint: '/api/v2/search',
                params: {
                  query: 'type:ticket',
                  per_page: 10
                },
                providerConfigKey: '<INTEGRATION-ID>',
                connectionId: '<CONNECTION-ID>'
            });

            console.log(JSON.stringify(res.data, null, 2));
            ```
            </Tab>

        </Tabs>

        Or fetch credentials dynamically via the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get).

      </Step>
    </Steps>

    ✅ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.

    <Tip>
    Next step: [Embed the auth flow](/getting-started/quickstart/embed-in-your-app) in your app to let your users connect their Zendesk accounts.
    </Tip>
  </Tab>
  <Tab title="🧑‍💻 OAuth app setup">
    <Note>
    Zendesk has two kinds of OAuth apps:
    - Helpdesk/support apps
    - CRM apps

    Nango currently only supports OAuth for the Helpdesk apps. If you need CRM, reach out or contribute it :)
    </Note>

    <Steps>
      <Step title="Create a Zendesk account">
        If you don't already have one, sign up for a free [Zendesk account](https://www.zendesk.com/register/).
      </Step>
      <Step title="Create an OAuth client">
        1. Log in to your to [Zendesk account](https://www.zendesk.com/login/) then navigate to **Admin Center** → **Apps and Integrations** → **APIs** → **OAuth Clients**. 
        2. Click **Add OAuth Client**.
      </Step>
      <Step title="Configure your OAuth client">
        1. Fill in all the required details. For **Client kind** select **Confidential** and for **Redirect URLs** enter `https://api.nango.dev/oauth/callback`.
        2. Click **Save** to create your OAuth client.
      </Step>
      <Step title="Obtain OAuth credentials">
        1. After creating your OAuth client, you’ll receive a **Secret** (your **Client Secret**). It will not be shown again, so be sure to store it securely. The **Client ID** is the same **Identifier** you provided earlier when configuring your OAuth client. Keep both credentials safe, as you’ll need them when setting up your integration in Nango.
      </Step>

      <Step title="Request a global OAuth client">
        If your application needs to connect to multiple Zendesk instances, you should request a **global OAuth client**. To do this, follow these steps:

        1. From the same app you created earlier, ensure your **Identifier** is prefixed with "zdg-" (e.g., "zdg-your-app-name").
        2. Complete all fields in the OAuth client configuration, including any that were left blank during the initial setup.
        3. When your app is ready to be used across multiple Zendesk accounts, note down the **Identifier** and **Secret** as you’ll need them when setting up your integration in Nango. You will lose access to the client administration page once the local client is converted to a global client.
        4. Sign in to the [Zendesk Marketplace](https://apps.zendesk.com/) portal, select **Organization** from the left-hand menu, and then navigate to the **Global OAuth Request** tab.
        5. Complete and submit the request form. Make sure:
        - The subdomain includes the prefix `d3v`- (submissions from non `-d3v-` accounts are not accepted).
        - Your local OAuth client in your sponsored account is properly configured with the same prefixes.
        <Note> You'll receive an email and a ticket reference with updates on your submission. Please add `support@appsubmission.zendesk.com` to your contact list to ensure you receive all communications regarding your submission. If the request is approved, Zendesk will convert your **local OAuth client** into a **global OAuth client**. </Note>
      </Step>
      <Step title="Next">
        Follow the [_Quickstart_](/getting-started/quickstart).
      </Step>
    </Steps>
  </Tab>
  <Tab title="🔗 Useful links">
    | Topic | Links |
    | - | - |
    | Authorization | [Guide to connect to Zendesk using Connect UI](/integrations/all/zendesk/connect) |
    | General | [Website](https://www.zendesk.com/) |
    | | [Create a Zendesk account](https://www.zendesk.com/register/) |
    | | [Zendesk Help Center](https://support.zendesk.com/) |
    | Developer | [API documentation](https://developer.zendesk.com/api-reference/) |
    | | [OAuth authentication guide](https://developer.zendesk.com/api-reference/sales-crm/authentication/reference/) |
    | | [OAuth client setup](https://support.zendesk.com/hc/en-us/articles/4408845965210-Using-OAuth-authentication-with-your-application#topic_s21_lfs_qk) |
    | | [OAuth scopes](https://support.zendesk.com/hc/en-us/articles/4408845965210-Using-OAuth-authentication-with-your-application#topic_qkc_dcm_dcc) |
    | | [Global OAuth client setup](https://developer.zendesk.com/documentation/marketplace/building-a-marketplace-app/set-up-a-global-oauth-client/) |
    | | [API rate limits](https://developer.zendesk.com/api-reference/introduction/rate-limits/) |

    <Note>Contribute useful links by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/zendesk.mdx)</Note>
  </Tab>
  <Tab title="🚨 API gotchas">
    -   Make sure to create a Zendesk OAuth app (`https://<USER-SUBDOMAIN>.zendesk.com/admin/apps-integrations/apis/zendesk-api/settings`), _not_ a Zendesk Sales CRM OAuth app.
    -   The subdomain is a critical part of the OAuth flow and API calls. It's the unique identifier in the Zendesk URL: `https://<subdomain>.zendesk.com`.
    -   Zendesk has [rate limits](https://developer.zendesk.com/api-reference/introduction/rate-limits/) that vary by plan.
    -   Zendesk OAuth apps [must be made "global"](https://developer.zendesk.com/documentation/marketplace/building-a-marketplace-app/set-up-a-global-oauth-client/) to connect to multiple `<USER-SUBDOMAIN>`s.
    -   When creating an OAuth client, make sure to fill out all fields, even those marked as "optional", especially if you plan to request a **global OAuth client** later.
    -   For security reasons, Zendesk doesn't allow developers to create their own global OAuth clients. You must request one from Zendesk.

    <Note>Contribute API gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/zendesk.mdx)</Note>
  </Tab>
</Tabs>

<Info>
    Questions? Join us in the [Slack community](https://nango.dev/slack).
</Info>
